﻿using PersistenceLayer.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PersistenceLayer.DAL
{
	public class Produto_MarcaDAL
	{
		private Entities Entity;

		public Produto_MarcaDAL()
		{
			Entity = new Entities();
		}

		public int Adicionar(Produto_Marca pm)
		{
			Entity.Produto_Marca.Add(pm);
			Entity.SaveChanges();
			return pm.ID;
		}
		public Produto_Marca Obter(int mID)
		{
			return Entity.Produto_Marca.Where(a => a.ID == mID).SingleOrDefault();
		}
		public List<Produto_Marca> Listar(int take = 0)
		{
			if (take == 0)
				return Entity.Produto_Marca.ToList();
			else
				return Entity.Produto_Marca.Take(take).ToList();
		}
		public void Atualizar(Produto_Marca novo)
		{
			try
			{
				var old = Entity.Produto_Marca.Where(a => a.ID == novo.ID).Single();
				old.Descricao = novo.Descricao;
				Entity.SaveChanges();
			}
			catch (Exception)
			{
				throw;
			}
		}
		public void Deletar(Produto_Marca pm)
		{
			try
			{
				if (Entity.Produto.Count(a => a.Marca_ID == pm.ID) > 0)
					throw new ApplicationException("Ainda há produtos utilizando-se desta marca!");

				Entity.Produto_Marca.Remove(pm);
				Entity.SaveChanges();
			}
			catch (Exception)
			{
				throw;
			}
		}
	}
}
